
#include "S_16_SingleSmartScene_doGet.h"
#include "mi_iid_define.h"
#include "property_decoder.h"
#include "section_define.h"
#include "main.h"

extern uint8_t  g_uNo1RegList[PBS_NO1REGSIZE];

/**
 * 格式: property_value_new_string(字符串)　
 * 取值: 字符串，没有限制取值范围
 */
static void P_16_1_AutoCooling_doGet(property_operation_t *o)
{
	char Str[30] = {0};
	float Temp1 = 0.0;
	float Temp2 = 0.0;
#if 	PROPERTY_TYPE
//	if(g_uNo1RegList[0x34])
	{
		Temp1 = (float)((g_uNo1RegList[0x37]<<8)|(g_uNo1RegList[0x36]))/10.0;
		Temp2 = (float)((g_uNo1RegList[0x39]<<8)|(g_uNo1RegList[0x38]))/10.0;
		if(g_uNo1RegList[0x35])
		{
			sprintf(Str,"true,%.1f,%.1f",Temp1,Temp2);
		}
		else
		{
			sprintf(Str,"false,%.1f,%.1f",Temp1,Temp2);
		}
		property_value_new_string(&o->value,Str);
	}
#else	
	o->value.format = PROPERTY_FORMAT_STRING;
	strncpy(o->value.data.string.value, "hello", strlen("hello")); // TODO: 这里需要读到属性真正的值
	o->value.data.string.length = strlen("hello"); 
#endif
    
}

/**
 * 格式: property_value_new_string(字符串)　
 * 取值: 字符串，没有限制取值范围
 */
static void P_16_2_AutomaticHeating_doGet(property_operation_t *o)
{
	char Str[30] = {0};
	float Temp1 = 0.0;
	float Temp2 = 0.0;
#if 	PROPERTY_TYPE
//	if(g_uNo1RegList[0x3A])
	{
		Temp1 = (float)((g_uNo1RegList[0x3D]<<8)|(g_uNo1RegList[0x3C]))/10.0;
		Temp2 = (float)((g_uNo1RegList[0x3F]<<8)|(g_uNo1RegList[0x3E]))/10.0;
		if(g_uNo1RegList[0x3B])
		{
			sprintf(Str,"true,%.1f,%.1f",Temp1,Temp2);
		}
		else
		{
			sprintf(Str,"false,%.1f,%.1f",Temp1,Temp2);
		}
		property_value_new_string(&o->value,Str);
	}
#else	
	o->value.format = PROPERTY_FORMAT_STRING;
	strncpy(o->value.data.string.value, "hello", strlen("hello")); // TODO: 这里需要读到属性真正的值
	o->value.data.string.length = strlen("hello");
#endif
    
}

/**
 * 格式: property_value_new_string(字符串)　
 * 取值: 字符串，没有限制取值范围
 */
static void P_16_3_AutoDry_doGet(property_operation_t *o)
{
	char Str[30] = {0};
#if 	PROPERTY_TYPE
//	if(g_uNo1RegList[0x40])
	{
		if(g_uNo1RegList[0x41])
		{
			sprintf(Str,"true,%d,%d",g_uNo1RegList[42],g_uNo1RegList[43]);			
		}
		else
		{
			sprintf(Str,"false,%d,%d",g_uNo1RegList[42],g_uNo1RegList[43]);
		}
		property_value_new_string(&o->value,Str);
	}
#else	
	o->value.format = PROPERTY_FORMAT_STRING;
	strncpy(o->value.data.string.value, "hello", strlen("hello")); // TODO: 这里需要读到属性真正的值
	o->value.data.string.length = strlen("hello");
#endif
}

/**
 * 格式: property_value_new_boolean(true 或 false)　
 * 取值: true 或　false
 */
static void P_16_12_ResetDefaltfilter(property_operation_t *o)
{
	InDoorBusReg RegSection1 = {0};
#if 	PROPERTY_TYPE
	RegSection1.V8 = GetPbsRegValue(0x07);
//	if(RegSection1.BIT.bit7)
	{
		property_value_new_boolean(&o->value,RegSection1.BIT.bit6);
	}
#else	
	o->value.format = PROPERTY_FORMAT_BOOLEAN;
    o->value.data.boolean.value = true;       // TODO: 这里需要读到属性真正的值
#endif
	
}


void S_16_SingleSmartScene_doGet(property_operation_t *o)
{
    switch (o->piid)
    {
        case PIID_16_1_AutoCooling:
            P_16_1_AutoCooling_doGet(o);
            break;

        case PIID_16_2_AutomaticHeating:
            P_16_2_AutomaticHeating_doGet(o);
            break;

        case PIID_16_3_AutoDry:
            P_16_3_AutoDry_doGet(o);
            break;

		case PIID_16_12_ResetDefaltfilter:
            P_16_12_ResetDefaltfilter(o);
            break;
		
		
        default:
            o->code = OPERATION_ERROR_VALUE;
            break;
    }
}
